package com.qwc.blog.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.qwc.blog.entity.Category;
import com.qwc.blog.entity.Posts;
import com.qwc.blog.entity.vo.posts.PostsListReqDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 文章元信息表 Mapper 接口
 * </p>
 *
 * @author qwc
 * @since 2021-11-01
 */
public interface PostsMapper extends BaseMapper<Posts> {

    /**
     * 获取文章列表
     *
     * @param page
     * @param dto
     * @param categoryIds
     * @return
     */
    PageDTO<Posts> selectByCategoryIds(Page<Posts> page, @Param("dto") PostsListReqDto dto, @Param("categoryIds") List<Integer> categoryIds);

    /**
     * 设置标签
     *
     * @param tags
     * @param postsId
     */
    void setTags(@Param("tags") List<Integer> tags, @Param("postsId") Integer postsId);

    /**
     * 删除文章对应标签
     *
     * @param postsId
     */
    void deleteTagsByPost(Integer postsId);

    /**
     * 删除文章对应的类目
     *
     * @param postsId
     */
    void deleteCategoryByPost(Integer postsId);

    /**
     * 设置文章目录
     *
     * @param categories
     * @param postsId
     */
    void setCategories(@Param("categories") List<Integer> categories, @Param("postsId") Integer postsId);

    /**
     * 获取文章标签名列表
     *
     * @param postsId
     * @return
     */
    List<String> getTagsByPosts(Integer postsId);

    /**
     * 获取文章分类id
     *
     * @param postsId
     * @return
     */
    List<Category> getCategoriesByPosts(Integer postsId);

    /**
     * 删除与文章有关系的分类
     *
     * @param asList
     */
    void deleteBatchPosts(List<Integer> asList);

    /**
     * 删除与文章有关系的标签
     *
     * @param asList
     */
    void deleteBatchTags(List<Integer> asList);
}
